package main

import (
	"flag"
	"io"
	"log"
	"net/http"
	"runtime"
	"strconv"
	"strings"
)

/**
并发测试: wrk -c 10 -d 10s -t10 http://localhost:9090

多次测试的结果在 4w 左右的 QPS 浮动，响应时间最多也就是 40ms 左右，对于一个 web 程序来说，
这已经是很不错的成绩了，我们只是照抄了别人的示例代码，就完成了一个高性能的 hello world 服务器，是不是很有成就感？
*/
//var i = 1

func sayhello(wr http.ResponseWriter, r *http.Request) {
	wr.WriteHeader(200)
	//log.Println(i)
	//i++
	io.WriteString(wr, "hello world")
}

// ./qps --ip=127.0.0.1 --port=9091
func main() {
	var ip, port string
	flag.StringVar(&ip, "ip", "0.0.0.0", "监听服务器 ip..")
	flag.StringVar(&port, "port", "9090", "监听端口")
	flag.Parse()
	addr := strings.Join([]string{ip, port}, ":")
	gomaxprocs := runtime.NumCPU() * 2
	runtime.GOMAXPROCS(gomaxprocs)

	log.Println("Listen http://" + addr)
	log.Println("当前最大运行进程数量:" + strconv.Itoa(gomaxprocs))

	http.HandleFunc("/", sayhello)
	err := http.ListenAndServe(addr, nil)
	if err != nil {
		log.Fatal("ListenAndServe:", err)
	}
}
